'''
f1 = open(r"H:\study\python\file\write.txt", "w", encoding="utf-8")

f1.write("hello world")
# 目前在内存的缓冲区内，还没有写入文件中；
# 如果想要立即写入，要么手动调用 f1.flush(); 要么调用 f1.close();
# 其实，在 f1.close() 时会自动调用 f1.flush();
# 还有一种方法立即写入：缓冲区大小是有限制的，如果写入的内容比缓冲区大，那么就会把缓冲区的内容写入文件了。
# 视频中说，还有种情况：遇到 \n 会写入。这个待测试。

f1.close()
'''

# 二进制的情况（注意：二进制模式下，没有 encoding 这个参数）
with open(r"H:\study\python\file\writeBin.txt", "wb") as f2:
    data = "hello world"
    f2.write(data.encode("utf-8"))  # 因为是二进制打开文件的，所以写入时必须进行编码（字节数据写入），当然读取时也应该解码；

with open(r"H:\study\python\file\writeBin.txt", "rb") as f3:
    data = f3.read()
    print(data)     #   b'hello world'
    print(type(data))   #   <class 'bytes'>
    newData = data.decode("utf-8")
    print(newData)  #   hello world
    print(type(newData))    #   <class 'str'>

